
package com.kuang.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Locale;

@Configuration //让这个类变成一个配置类
//@EnableWebMvc //继承原有mvc，扩展mvc (这个别乱加，会导致无法加载静态文件)
public class MyMvcConfig implements WebMvcConfigurer {
    //实现了视图解析器接口的类，就可以叫做视图解析器
    @Bean //表示返回一个bean对象
    public ViewResolver myViewResolver(){
        return new MyViewResolver();
    }
    @Bean //这到底是要干什么?把自定义的国际化页面语言设置功能对象放入地区解析器中
    public LocaleResolver localeResolver(){
        return new MyLocalResolver();
    }
    //自定义了一个自己的视图解析器myViewResolver
    public static class MyViewResolver implements ViewResolver{
        @Override
        public View resolveViewName(String viewName, Locale locale) throws Exception {
            return null;
        }
    }
    //视图跳转
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
//        WebMvcConfigurer.super.addViewControllers(registry);
        registry.addViewController("/kuang").setViewName("test"); //访问这个http://127.0.0.1:8081/kuang 得出来的是test模板中的内容,url还是kuang的
        registry.addViewController("/").setViewName("login");//用视图跳转的办法，为多个url赋值同一个页面。这个index是去template中找index.html文件，而不是走的controller里的方法
        //registry.addViewController("/index").setViewName("index");//用视图跳转的办法，为多个url赋值同一个页面。这个index是去template中找index.html文件，而不是走的controller里的方法
        registry.addViewController("/login.html").setViewName("login");//用视图跳转的办法，为多个url赋值同一个页面。这个index是去template中找index.html文件，而不是走的controller里的方法
        //registry.addViewController("/main.html").setViewName("dashboard");//用视图定义路由到dashboard模板
        //registry.addViewController("/index.html").setViewName("index");
        //registry.addViewController("/dashboard").setViewName("index");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //WebMvcConfigurer.super.addInterceptors(registry);
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/login.html","/login","/css/*","/img/*","/js/*");
        // /** 表示要观察所有url是否有用户登录了,没有登录的用户,页面内容会变成login.html的内容,url不会变,且msg会提示"没有权限，请先登录"
        // exclude 表示不对 "/login.html","/login" 过滤,允许用户未登录情况下,浏览登录页面
    }
}

